package com.bcbim.operation_maintenance_interface.space_inventory_report.service;

import com.bcbim.common.sys.Code;
import com.bcbim.operation_maintenance_interface.space_inventory_report.dao.SpaceInventoryReportDAO;
import com.bcbim.operation_maintenance_interface.space_inventory_report.dto.ListSpaceInventoryReportDTO;
import com.bcbim.operation_maintenance_interface.space_inventory_report.dto.ReportTableHeadDTO;
import com.bcbim.operation_maintenance_interface.space_inventory_report.dto.SpaceInventoryReportDTO;
import com.bcbim.operation_maintenance_interface.space_inventory_report.vo.ListSpaceInventoryReportNameVO;
import com.bcbim.operation_maintenance_interface.space_inventory_report.vo.ListSpaceInventoryReportVO;
import com.bcbim.operation_maintenance_interface.space_inventory_report.vo.TotalSpaceInventoryReportVO;
import com.bcbim.operation_maintenance_interface.space_inventory_report_table_head.dao.SpaceInventoryReportTableHeadDAO;
import com.bcbim.operation_maintenance_interface.space_inventory_report_table_head.vo.SpaceInventoryReportTableHeadVO;

import java.util.List;

/**
 * @version V 1.0.0
 * @Description：空间清册报表service接口类
 * @Author: haomeijie
 * @Date: 2022/4/13 13:49
 **/
public interface SpaceInventoryReportService {
    /**
     * 空间清册列表总数
     *
     * @param listSpaceInventoryReportDTO
     * @return int
     * @Author: haomeijie
     * @Date: 2022/4/13 14:38
     */
    int listSpaceInventoryReportCount(ListSpaceInventoryReportDTO listSpaceInventoryReportDTO);

    /**
     * 空间清册列表
     *
     * @param listSpaceInventoryReportDTO
     * @return List<ListSpaceInventoryReportVO>
     * @Author: haomeijie
     * @Date: 2022/4/13 14:38
     */
    List<ListSpaceInventoryReportVO> listSpaceInventoryReport(ListSpaceInventoryReportDTO listSpaceInventoryReportDTO);

    /**
     * 导出空间清册列表
     *
     * @param list       空间清册列表
     * @param headList   表头设置
     * @param uploadPath 文件路径
     * @return String
     * @Author: haomeijie
     * @Date: 2022/4/13 17:29
     */
    String exportSpaceInventoryReport(List<ListSpaceInventoryReportVO> list, List<ReportTableHeadDTO> headList, String uploadPath);

    /**
     * @Description: 空间清册报表名称列表
     * @Date: 2022/4/14 10:51
     * @Param: [spaceInventoryReportDTO]
     * @return: java.util.List<com.bcbim.model_interface.space_inventory_report.vo.ListSpaceInventoryReportNameVO>
     * @Author: lihonggang
     **/
    List<ListSpaceInventoryReportNameVO> listSpaceInventoryReportName(SpaceInventoryReportDTO spaceInventoryReportDTO);

    /**
     * @Description: 查询空间清册报表名称列表总数
     * @Date: 2022/4/14 11:07
     * @Param: [spaceInventoryReportDTO]
     * @return: int
     * @Author: lihonggang
     **/
    int countListSpaceInventoryReportName(SpaceInventoryReportDTO spaceInventoryReportDTO);

    /**
     * @Description: 修改空间清册报表名称
     * @Date: 2022/4/14 14:32
     * @Param: [spaceInventoryReportDAO]
     * @return: int
     * @Author: lihonggang
     **/
    int updateSpaceInventoryReportName(SpaceInventoryReportDAO spaceInventoryReportDAO);

    /**
     * 判断名字是否重复
     *
     * @param spaceInventoryReportDAO
     * @return int
     * @Author: haomeijie
     * @Date: 2022/4/14 16:25
     */
    boolean checkReportName(SpaceInventoryReportDAO spaceInventoryReportDAO);

    /**
     * 修改空间清册报表
     *
     * @param spaceInventoryReportDAO 空间清册报表
     * @param reportDTO               筛选条件
     * @param headList                表头参数
     * @return int
     * @Author: haomeijie
     * @Date: 2022/4/14 17:02
     */
    int updateSpaceInventoryReport(SpaceInventoryReportDAO spaceInventoryReportDAO, ListSpaceInventoryReportDTO reportDTO, List<SpaceInventoryReportTableHeadDAO> headList);

    /**
     * 新增空间清册报表
     *
     * @param spaceInventoryReportDAO 空间清册报表
     * @param reportDTO               筛选条件
     * @param headList                表头参数
     * @return int
     * @Author: haomeijie
     * @Date: 2022/4/14 17:02
     */
    int insertSpaceInventoryReport(SpaceInventoryReportDAO spaceInventoryReportDAO, ListSpaceInventoryReportDTO reportDTO, List<SpaceInventoryReportTableHeadDAO> headList);

    /**
     * 获取查询条件
     *
     * @param spaceInventoryReportId
     * @return List<Code>
     * @Author: haomeijie
     * @Date: 2022/4/15 10:53
     */
    List<Code> listQuery(String spaceInventoryReportId);

    /**
     * 查询名字同系列的报表名称
     *
     * @param reportName
     * @param projectId
     * @return List<String>
     * @Author: haomeijie
     * @Date: 2022/4/15 14:09
     */
    List<String> listReportName(String reportName, String projectId);

    /**
     * 复制报表
     *
     * @param spaceInventoryReportDAO 报表
     * @param query                   条件
     * @param head                    表头
     * @return
     * @Author: haomeijie
     * @Date: 2022/4/15 15:13
     */
    int copySpaceInventoryReport(SpaceInventoryReportDAO spaceInventoryReportDAO, List<Code> query, List<SpaceInventoryReportTableHeadVO> head);

    /**
     * 空间清册列表总计
     *
     * @param listSpaceInventoryReportDTO
     * @return TotalSpaceInventoryReportVO
     * @Author: haomeijie
     * @Date: 2022/4/19 17:33
     */
    TotalSpaceInventoryReportVO getTotal(ListSpaceInventoryReportDTO listSpaceInventoryReportDTO);
}
